<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 构造函数的继承

        function Parent(money) {
            this.money = money
        }
        Parent.prototype.house =  '135平米'
        // var parent = new Parent()
        // console.log(parent)
        function Son() {
            // console.log(this)
            Parent.call(this, 1000000)
        }

        // 原型链继承
        // Son.prototype = new Parent()

        // Son.prototype.constructor = Son

        var son = new Son()

        // console.log(son)

        // 构造函数继承 无法继承父类的原型上的属性和方法
        console.log(son)

        // 组合式继承 就是结合使用原型链继承又使用构造函数继承


        // 原型式继承


        // function parent() {
        //     var obj = {
        //         name: '张三'
        //     }
        //     function Son() {} 
        //     Son.prototype = obj

        //     return Son
        // }

        // var Son = parent()

        // var son = new Son()

        // console.log(son)
            // 继承式继承

        function fn(obj) {
            var newObj = Object(obj)

            newObj.say = function() {
                console.log('hello world')
            }

            return newObj
        }

        var createObj = fn({
            name: '张三',
            age: 15
        })
        console.log(createObj)
    </script>
</body>
</html>